Soru & Cevap

Arduinodan Androide veri gönderiyorum ama okutamıyorum

08.03.2016 - 04:21

Arduino dan HC-05 Bluetooth Modül ile Android e veri gönderip Android e okutarak bu veriyi bir text in içine yazdırmaya çalışıyorum ama başaramadım.Elimdeki program Android studio da yazıldı bu programa veriyi okutamadım yada okuduysa bile text e yazmadı. Kodların ilgili kısımları aşağıdaki gibi 

private class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;

        public ConnectedThread(BluetoothSocket socket) {
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;

            try {
                tmpIn = socket.getInputStream();     
                tmpOut = socket.getOutputStream();  
            } catch (IOException e) { }

            mmInStream = tmpIn;
            outstream = tmpOut;
        }
        public void run() {
            byte[] buffer = new byte[1024];
            int bytes;
            while (true) {
                try {
                    //buffer = new byte[1024];
                    bytes = mmInStream.read(buffer);
                    mHandler.obtainMessage(mesajoku, bytes, -1, buffer)
                            .sendToTarget();
                } catch (IOException e) {
                    break;
                }
            }
        }
        public void cancel() {
            try {
                mmSocket.close();
            } catch (IOException e) { }
        }
    }

Hanler kodları

private final Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            switch(msg.what){
              case baglanti:

               ConnectedThread connectedThread = new ConnectedThread((BluetoothSocket)msg.obj);
                    Toast.makeText(getApplicationContext(), "Baglandı", 0).show();
                    String s = "successfully connected";
                    break;
               case mesajoku:
                    byte[] readBuf = (byte[])msg.obj;
                    String string = new String(readBuf, 0, msg.arg1);  
                    Toast.makeText(getApplicationContext(), string, 0).show();


                    göster=(TextView)findViewById(R.id.deger);
                    göster.setText(readBuf[0]);

                    break;

            }
        }
    };

Bu kodlarla okutup text e yazdıramıyorum Android Developers ın sitesindeki BluetoothChat örneğiyle de yapmayı denedim ama oda HC-05 Bluetooth Modüle bağlanmıyor 'Unable to Connect Device' (Cihaz bağlanılamıyor) uyarı veriyor.

Yardımcı olabilirseniz sevinirim

64 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user ksonder
ksonder
09.12.2022 - 02:53

Merhaba, Arduino HC-05 üzerinden yazdığım uygulamaya veri göndermeye çalışıyorum ama bir türlü yapamıyorum. Bu konuda bilgi edinebildiniz mi? Uygulamayı Kotlin ile yazıyorum o nedenle pek yardımı dokunmadı buradaki kodun.

picture-3240-1455469375.png
harunkor
10.03.2016 - 06:55

Merhabalar Mehmet Bey, 

Sanırım Bluetooth bağlantı sağlayamıyorsunuz. Uygulama içinde Bluetooth bağlantınız olmalıdır diye düşünmekteyim tam emin değilm.  Bluetooth aşağıdaki biçimde bağlanabilirsiniz ..

Kolaylıklar dilerim.

Manifest : 

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />

 

/**
 * Created by KorHarun on 29/02/16. 
    Fork me on GitHub - https://github.com/harunkor 
    https://www.facebook.com/tr.com.harunkor
    www.harunkor.com.tr  
 */

private class BluetoothConnection extends Thread {
	private final BluetoothSocket mmSocket;
	private final InputStream mmInStream;
	private final OutputStream mmOutStream;
	byte[] buffer;

	// UUID 128-bit evrensel benzersiz tanımlayıcı (UUID) bir değişmez temsilidir.
	/* HC-05 UUID  "00001101-0000-1000-8000-00805F9B34FB"
      private static final UUID MY_UUID_SECURE =
       UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
     private static final UUID MY_UUID_INSECURE =
        UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
*/

	private static final UUID MY_UUID = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");
			
	public BluetoothConnection(BluetoothDevice device) {
		
		BluetoothSocket tmp = null;

		// BluetoothSocket açtık Bluetooth bağlayacağız.
		try {
			tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
		} catch (IOException e) {
			e.printStackTrace();
		}
		mmSocket = tmp;
		
		//sokete bağlan
		Thread connectionThread  = new Thread(new Runnable() {
				
				@Override
				public void run() {
					// Bağlantıyı yavaşlatmaması için adapter discovery yapıyoruz.
					mAdapter.cancelDiscovery();

					//  BluetoothSocket bağlanır.
					try {
						
						mmSocket.connect();  //başarılı bağlantı
					} catch (IOException e) {
						// donanım kaynaklı bağlantı olumsuz...
						try {
							mmSocket.close();
						} catch (IOException e2) {
							e2.printStackTrace();
						}
					}
				}
			});
		
		connectionThread.start();
		
		InputStream tmpIn = null;
		OutputStream tmpOut = null;

		//  BluetoothSocket input and output streams
		try {
			tmpIn = socket.getInputStream();
			tmpOut = socket.getOutputStream();
			buffer = new byte[1024];
		} catch (IOException e) {
			e.printStackTrace();
		}

		mmInStream = tmpIn;
		mmOutStream = tmpOut;
	}

	public void run() {
		
		
		while (true) {
			try {
				
				mmInStream.read(buffer); // okuma işlemi
				
			} catch (IOException e) {
				//failed
				break;
			}
		}
	}

	public void write(byte[] buffer) {
		try {
			//write the data to socket stream
			mmOutStream.write(buffer);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void cancel() {
		try {
			mmSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}